#ifndef _IGAMEOBJCONTROLLER_H_
#define _IGAMEOBJCONTROLLER_H_

#include "Common.h"
#include "IGameObj.h"

#include <vector>
#include <nv_math/nv_math.h>
class IGameObjController
{
public:
	virtual IGameObjController(){};

	virtual lvVoid Move(const vec3 &vecDPos)=0;
	virtual lvVoid Rotate(const vec4 &quatDOrient)=0;

	virtual lvVoid setPos(const vec3 &vecNewPos)=0;
	virtual vec3 getPos() const =0;

	virtual lvVoid setOrientation(const vec4 &quatOrientation)=0;
	virtual vec4 getOrientation() const =0;

	lvVoid addControlledObject(const IGameObj *pObj)
	{
		for(std::vector<IGameObj*>::iterator _itTemp = m_arControlledObjects.begin(); _itTemp != m_arControlledObjects.end(); _itTemp++)
		{
			if((*_itTemp)==pObj)
			{
				return;
			};
		};
		m_arControlledObjects.push_back(pObj);
	};
	lvVoid removeControlledObject(const IGameObj *pObj)
	{
		for(std::vector<IGameObj*>::iterator _itTemp = m_arControlledObjects.begin(); _itTemp != m_arControlledObjects.end(); _itTemp++)
		{
			if((*_itTemp)==pObj)
			{
				m_arControlledObjects.erase(_itTemp);
				return;
			};
		};
	};
protected:
	std::vector<IGameObj*> m_arControlledObjects;
};

#endif